package cn.zhx.domain.rebate.respository;


import cn.zhx.domain.rebate.model.aggregate.BehaviorRebateAggregate;
import cn.zhx.domain.rebate.model.entity.BehaviorRebateOrderEntity;
import cn.zhx.domain.rebate.model.valobj.BehaviorTypeVO;
import cn.zhx.domain.rebate.model.valobj.DailyBehaviorRebateVO;


import java.util.List;

/**
 *  行为返利服务仓储接口
 */
public interface IBehaviorRebateRepository {
    /**
     * 查询返利配置
     * @param behaviorTypeVO 用户行为类型：sign签到 pay支付
     * @return 返利配置列表 一个行为类型会有多个返利类型，比如签到 -> 增加积分 + 增加抽奖次数(sku)
     */
    List<DailyBehaviorRebateVO> queryDailyBehaviorRebateConfig(BehaviorTypeVO behaviorTypeVO);


    /**
     * 保存用户行为返利记录
     * @param userId 用户id
     * @param behaviorRebateAggregates 行为返利聚合对象
     */
    void saveUserRebateRecord(String userId, List<BehaviorRebateAggregate> behaviorRebateAggregates);

    /**
     * 查询用户行为返利记录
     * @param userId 用户id
     * @param outBusinessNo 业务id
     * @return 用户行为返利记录
     */
    List<BehaviorRebateOrderEntity> queryOrderByOutBusinessNo(String userId, String outBusinessNo);
}
